package 作业.字符流;
/**
 * ##### 第一题：分析以下需求，并用代码实现
 * **训练目标**：
 * 	掌握java中字符流的基本使用，以及理解其在实际开发中的应用
 * **需求描述**：
 * 	编写一个程序，把一个目录里边的所有带.java文件拷贝到另一个目录中，拷贝成功后，把后缀名是.java的文件改为.txt文件。
 * （注意事项：是先拷贝，拷贝成功后才可以改后缀名的）
 * **实现提示**：
 * 1. 用File对象封装目录
 * 2. 通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组
 * 3. 遍历这个File数组，得到每一个File对象
 * 4. 判断该File对象是否是文件
 *    - 如果是文件
 *    - 继续判断是否以.java结尾
 *      - 是：复制文件，再复制完成后改名
 *      - 否：不复制
 */

import cn.hutool.core.io.FileUtil;

import java.io.*;

public class Test {
    public static void main(String[] args) throws IOException {
//         * 1. 用File对象封装目录
        File sourceDir=new File("H:\\javabase_ws2\\java_advance\\Day11_io\\src\\作业\\字符流");
        File targetDir=new File("H:\\javabase_ws2\\java_advance\\Day11_io\\src\\作业\\字符流2");
        if(!targetDir.exists()){
            targetDir.mkdirs();
        }
//                * 2. 通过listFiles()方法获取该目录下所有的文件或者文件夹的File对象数组
             File[]files=sourceDir.listFiles();
                  if(files==null){
                    System.out.println("目录为空。");
                    return;
                }

       // * 3. 遍历这个File数组，得到每一个File对象
        for (File file : files) {
            if (file.isFile()&&file.getName().endsWith(".java")){
                FileInputStream fis= null;
                FileOutputStream fos= null;
                FileUtil.copy(file,new File(targetDir,file.getName().replace(".java",".txt")),true);
             /*   byte[]bytes= null;
                int len;
                try {
                    File targetFile=new File(targetDir,file.getName().replace(".java",".txt"));
                    fis = new FileInputStream(file);
                    fos = new FileOutputStream(targetFile);
                    bytes = new byte[1024];
                } catch (FileNotFoundException e) {
                    throw new RuntimeException(e);
                }
                while ((len=fis.read(bytes))!=-1){
                    fos.write(bytes,0,len);
                }*/
            }
        }
//                * 3. 遍历这个File数组，得到每一个File对象
//                * 4. 判断该File对象是否是文件
//                *    - 如果是文件
//                *    - 继续判断是否以.java结尾
//                *      - 是：复制文件，再复制完成后改名
//                *      - 否：不复制
    }
}
